#ifndef _SSSP_H_
#define _SSSP_H_

#include "includes.h"
#include "structs.h"
#include "declares.h"

#define SSSP_NOPARA -1

struct sssp_res_t 
{
        int para,dist;
};

struct sssp_msg_t
{
        int vid,dist,para;
};

extern char *sssp_doc, *sssp_args_doc;
extern struct grape_plugin_t sssp_plugin ; 



struct sssp_msg_t *sssp_make_msg(int,int,int);
struct sssp_res_t *sssp_make_res(int,int);
int sssp_results_init(struct args_t *args, void **result);
void sssp_serial(my_adjlist_t *adjlist,int source,igraph_vector_int_t *result);
int sssp_load_query(FILE *q, igraph_vector_ptr_t *qs);
void *sssp_copy_query(void *q);
void *sssp_peval(void *ptr);
void *sssp_inceval(void *ptr);
void* sssp_assemble(struct args_t *args, int nfrag);
void sssp_results_destroy(void *p);

int verify_sssp(FILE *dimacs, int source, igraph_matrix_t *result);
#endif 
